package com.xhj.mybatis.reflection.wrapper;

import com.xhj.mybatis.reflection.MetaObject;

/**
 * ObjectWrapperFactory
 *
 * @author XJks
 * @description 用于创建对象包装器（ObjectWrapper）。
 */
public interface ObjectWrapperFactory {
    /**
     * 判断给定的对象是否有对应的包装器。
     *
     * @param object 需要判断的原始对象
     * @return 如果有包装器返回 true，否则返回 false
     */
    boolean hasWrapperFor(Object object);

    /**
     * 为指定对象获取一个包装器。
     *
     * @param metaObject 元对象，封装了原始对象及其元数据信息
     * @param object     需要包装的原始对象
     * @return 返回该对象的包装器（ObjectWrapper 实例）
     */
    ObjectWrapper getWrapperFor(MetaObject metaObject, Object object);
}
